package com.cci.kangdao.service;

import com.cci.kangdao.dto.PagedResponse;
import com.cci.kangdao.dto.request.ButlerRequest;
import com.cci.kangdao.dto.response.CustomerEngineRelResponse;
import com.cci.kangdao.model.ButlerInfo;
import org.springframework.web.servlet.ModelAndView;

import java.util.Map;

public interface CustomerEngineRelService {
    /**
     * 根据用户id获取设备列表
     */
    ModelAndView getCustomerEngineRel(Map<String, Object> map);

    /**
     * 分页设备列表
     */
    ModelAndView getPageCustomerEngineList(Map<String, Object> map);

    /**
     * 管家服务列表
     */
    PagedResponse<ButlerInfo> getButlerServiceList(ButlerRequest request);

    /**
     * 修改 管家服务
     */
    boolean updateButlerService(ButlerInfo info);

    /**
     * 获取用户历史设备列表
     */
    ModelAndView getHistoryCustomerEngineRel(Map<String, Object> map);

    /**
     * 根据esn获取用户设备详细接口
     */
    ModelAndView getCustomerEngineByEsn(Map<String, Object> map);

    /**
     * 根据CustomerEngine表主键id获取设备信息详情
     */
    ModelAndView getCustomerEngineById(Map<String, Object> map);

    /**
     * 用户添加设备信息接口
     */
    ModelAndView addCustomerEngineRel(Map<String, Object> map);

    /**
     * 用户修改设备信息接口
     */
    ModelAndView updateCustomerEngineRel(Map<String, Object> map);

    /**
     * 用户删除设备信息接口
     */
    ModelAndView deleteCustomerEngineRel(Map<String, Object> map);


    /**
     * 根据用户id获取大运设备列表
     */
    ModelAndView getDYCustomerEngineRel(Map<String, Object> map);


    /**
     * 用户添加设备信息接口
     */
    ModelAndView newAddCustomerEngineRel(Map<String, Object> map);

    /**
     * 用户修改设备信息接口
     */
    ModelAndView newUpdateCustomerEngineRel(Map<String, Object> map);

    /**
     * 用户删除其他服务站的车辆新增芯管家车辆
     */
    ModelAndView xgjVerifyVehicle(Map<String, Object> map);

    /**
     * 批量绑车
     */
    ModelAndView batchBindVehicles(Map<String, Object> map);

    /**
     * 批量绑车并签协议
     */
    ModelAndView batchBindVehiclesSign(Map<String, Object> map);

    /**
     * 根据esn校验是否符合
     */
    boolean esnByCheck(String esn);

    /**
     * 根据esn获取最新设备详细
     */
    CustomerEngineRelResponse getEngineByEsn(String esn);


    /**
     * 根据esn获取所有绑定该esn的用户信息（除了本人）
     */
    ModelAndView getCustomerEngineRelByEsn(Map<String, Object> map);


    /**
     * 车主解除授权接口
     */
    ModelAndView carOwnerUnBindAuth(Map<String, Object> map);

    /**
     * 获取用户商用车列表
     */
    ModelAndView getCommercialCarList(Map<String, Object> map);


    /**
     * 提交完善车辆信息接口（油耗导航）
     */
    ModelAndView submitImproveCarMsg(Map<String, Object> map);

    ModelAndView waNewAddCustomerEngineRel(Map<String, Object> map);

    /**
     * 用户添加设备信息和amt的接口
     *
     * @param map
     * @return
     */
    ModelAndView addCustomerEngineAndAmt(Map<String, Object> map);

    ModelAndView getCustomerEngineRelAndAmt(Map<String, Object> map);

    ModelAndView updateCustomerEngineRelAmt(Map<String, Object> map);

    ModelAndView deleteCustomerEngineRelAmt(Map<String, Object> map);

    void updateAssociationType(Map<String, Object> map);

    ModelAndView getCustomerEngineByEsnOrFirst(Map<String, Object> map);

}
